﻿// Copyright 2008 Chris Varley (http://www.contractdriven.net/)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


using System;
using System.Runtime.Serialization;
using System.Security.Permissions;

namespace ContractDriven.Exceptions
{
	/// <summary>
	/// <para>An Exception that describes a broken precondition.</para>
	/// <para>Note: SerializableAttribute is required as not inherited from Exception.</para>
	/// </summary>
	[Serializable]
	public class PreconditionException : ContractException
	{
		public PreconditionException()
        {
        }

        public PreconditionException(string message) : base(message)
        {
        }

        public PreconditionException(string message, Exception innerException) : base(message, innerException)
        {
        }

		//Note: without this contructor, deserialization will fail.
        [SecurityPermission(SecurityAction.Demand, SerializationFormatter=true)]    
		protected PreconditionException(SerializationInfo info, StreamingContext context) 
			: base (info, context)
		{
		}

	}
}
